package com.bjsxt.userscenter.back.util;

import java.util.Date;
import java.util.Iterator;
import java.util.Map.Entry;

import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;
import com.bjsxt.userscenter.common.util.ConstatFinalUtil;
import com.bjsxt.userscenter.common.util.DateFormatUtil;

/**
 * 所有的任务调度
 * @author wangshSxt
 *
 */
@Component("taskUtil")
public class TaskUtil
{
	/**
	 * 定时执行的方法
	 * 配置到Spring文件中
	 */
	public void run()
	{
		ConstatFinalUtil.LOGGER.info("=== 调试任务开始 ===");
		this.cleanToken();
		ConstatFinalUtil.LOGGER.info("=== 调试任务结束 ===");
	}
	
	/**
	 * 清理Token
	 */
	public void cleanToken()
	{
		ConstatFinalUtil.LOGGER.info("=== 清理Token开始 ===token:数量:{}",ConstatFinalUtil.TOKENS_MAP.size());
		DateFormatUtil dateFormatUtil = new DateFormatUtil();
		/* 循环存储Token的Map
		 * 拿Token对应的管理员信息,拿当前时间-管理员的上次验证时间,大于2分钟,将此token移除
		 *  */
		for (Iterator iterator = ConstatFinalUtil.TOKENS_MAP.entrySet().iterator(); iterator.hasNext();)
		{
			Entry me = (Entry) iterator.next();
			String token = me.getKey() + "" ; 
			JSONObject adminsJSON = (JSONObject) me.getValue() ;
			ConstatFinalUtil.LOGGER.debug("=== key:{},value:{} ===",token,adminsJSON);
			/* 要把字符串转换成时间类型
			 * 
			 *  */
			Date validate = dateFormatUtil.parse(adminsJSON.get("validate") + "");
			if(validate != null && System.currentTimeMillis() - validate.getTime() > 1000 * 60 * 2 )
			{
				ConstatFinalUtil.TOKENS_MAP.remove(token);
			}
		}
		ConstatFinalUtil.LOGGER.info("=== 清理Token结束 ===token:数量:{}",ConstatFinalUtil.TOKENS_MAP.size());
	}
}
